package cn.jbit.utils;

import java.text.DecimalFormat;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;

/**
* 
* @time 2018年4月7日
*
* 类说明: 字符串工具类
*/
public class StringUtil {
	
	/**
	 * 是否为空
	 * @param str
	 * @return
	 */
	public static boolean isBlank(String str){
		if(str==null || str.isEmpty() || str.replaceAll(" ", "").isEmpty() || "null".equals(str)){
			return true;
		}
		return false;
	}
	
	public static boolean isBlank(String... strs){
		for(int i=0; i<strs.length; i++){
			if(isBlank(strs[i])){
				return true;
			}
		}
		return false;
	}
	
	/**
	 * 首字母大写
	 * @param in
	 * @return
	 */
	public static String upperHeadChar(String in){  
	    String head=in.substring(0,1);  
	    String out=head.toUpperCase()+in.substring(1,in.length());  
	    return out;  
	}
	
	/**
	 * 小数转分数
	 */
	public static String decimalToFraction(String xs){
		//格式化取小数后两位
        DecimalFormat df = new DecimalFormat("#.00");
        //string转double在转换成厘米
        double x = Double.parseDouble(xs) * 0.3937008;
		String xiaoshu = df.format(x);
        String[] array = new String[2];
        
        array = xiaoshu.split("\\.");  
        int a = Integer.parseInt(array[0]);//获取整数部分  
        int b = Integer.parseInt(array[1]);//获取小数部分  
        int length = array[1].length(); 
        
        int FenZi = (int) (0 + b);
        int FenMu = (int) Math.pow(10, length);  
        int MaxYueShu = getGongYueShu(FenZi, FenMu);
        
        return a+" "+FenZi / MaxYueShu + "/" + FenMu / MaxYueShu;
	}
	
	/**
	 * 分数转小数
	 */
	public static String fractionToDecimal(String fenshu){
    	String[] array = new String[2];
    	
    	//切割整数与分数位
    	array = fenshu.split(" ");  
    	
		int a = Integer.parseInt(array[0]);//获取整数部分  
	    String b = array[1];//获取分数数部分  
	    array = b.split("/");
	    int c = Integer.parseInt(array[0]);//获取分子部分  
        int d = Integer.parseInt(array[1]);//获取分母部分

        //获取结果自动转换英寸
        double x = ((double)c/(double)d + (double)a) * 2.54;
        
        //格式化取小数后两位
        DecimalFormat df = new DecimalFormat("#.00");
        return df.format(x);
	}
	
	/**
	 * 求两个数的最大公约数  
	 */
	public static int getGongYueShu(int a, int b) {
        int t = 0;  
        if(a < b){
        t = a;  
        a = b;  
        b = t;  
        }
        int c = a % b;  
        if(c == 0){  
            return b;  
        }else{  
            return getGongYueShu(b, c);  
        }  
    }


}
